/* 
 * File:   JSVNSock_Stream_InterConversion.h
 * Author: johnneyshi
 *
 * Created on 2013年5月18日, 下午4:37
 */

#ifndef JSVNSOCK_STREAM_INTERCONVERSION_H
#define	JSVNSOCK_STREAM_INTERCONVERSION_H
#include <string>

/*这个类提供了在描述符和文件之间的相互转化。因为客户端需要把序列化的文件向描述符发送，也许要接受来自描述符的数据，转化位文件，然后再序列化
 * 同理服务器端，这里没有直接从内存到描述符是因为，如果把描述符当作序列化的目的地，那么序列化后，无法再修改在前面写入的类的大小。其实这里可以
 * 优化。第一次写入类大小是，是真实的类的大小，而不是后来再修改。
 */
class JSVNSock_Stream_InterConversion {
public:
    JSVNSock_Stream_InterConversion();
    virtual ~JSVNSock_Stream_InterConversion();
    /*转化的时候，先读取一个字节大小，知道需要从这个描述符读取的所有的数据的大小，然后在继续读取*/
    static void SockToStream(int fd,std::string fileName);
    /*直接把文件中的所有内容写入描述符中*/
    static void StreamToSock(int fd,std::string fileName);
private:

};

#endif	/* JSVNSOCK_STREAM_INTERCONVERSION_H */

